The demand for data storage has been rapidly escalating because as the amount of data, such as digital media, stored by users grows, so does the users' need to store digital media reliably over extended periods of time. Storage systems to store digital media range from a local storage media (e.g., CDs and backup tapes) and network storage systems (such as NAS or file servers) to cloud-based storage systems.
Network storage systems such as NAS and file servers provide access to files to users connected in a local area network though standard file sharing protocols (e.g., common internet file system (CIFS) or network file system (NFS)).
Cloud-based storage systems, also referred to as cloud storage services (CSS), provide mass storage through a web service interface available through the Internet. The storage infrastructure includes a distributed array of geographically distributed data centers connected to a plurality of clients through a wide area network (WAN). A data center typically consists of servers and mass storage to facilitate cloud storage services to the clients. Such services enable applications including, for example, backup and restoration of data, data synchronization, file sharing, and so on.
A directory structure in a storage system controls how data is stored and retrieved. Without a directory structure, information placed in a storage area would be one large body of data with no way to locate files in an organized fashion. By separating the data into folders and giving each folder a name, the information is easily separated and identified. The structure and logic rules used to manage the groups of information and the names of such groups is referred to as a “namespace”. As an example, a path in a namespace may be, e.g., \\server\my documents\share1.
In traditional file sharing systems, such as NAS devices or file servers, a single namespace, in which the files of all users are stored, exists per server in the form of folders, each folder having a specific access control list. An exemplary namespace 100 of a NAS is shown in FIG. 1.
The drive ‘c’ 110 includes root folders “users” 121, “projects” 122, and “marketing projects” 123. Each such root folder has its own sub-folders (collectivity labeled as sub-folders 130), and some sub-folders may further include additional sub-folders (collectivity labeled as nested sub-folders 140). For example, the sub-folder ‘user1’ has two nested sub-folders, ‘my documents’ and ‘my pictures.’ As an example, the corresponding namespace where ‘user1’ is “Mark Barkely” may be as follows:
C:\Users\mark-barkely\my documentsC:\Users\mark-barkely\my pictures
The disadvantage of the namespace utilized in NAS and the like is that they scale poorly to organizations with thousands of users because all such users are exposed to the same namespace. Further, in large file systems having tens of thousands of folders with differing access rights, the directory hierarchy must become deep, complex, and often difficult to manage.
One approach to simplifying conventional namespaces is to expose users to a “global namespace” or “unified namespace.” Such namespaces provide the ability to aggregate disparate and remote network based file systems, thereby providing a virtualized, consolidated view, as if the files were stored on a single file server. However, such namespace systems suffer from the same scalability and ease-of-use limitations as namespaces adopted by traditional file sharing systems.
Additionally, as the fixed hierarchy of folders shared by all users results in deeply nested hierarchies of folders, users in small to large organizations cannot share information in a convenient way.
Some cloud-based storage systems forego the concept of a fixed, shared folder hierarchy and instead expose each user to a private namespace. This approach allows the namespace owner to conveniently view all their folders and files as well as folders and files shared with the namespace owner. However, personal or shared folders irrelevant to the namespace owner are not visible. Such cloud-based systems also allow users to invite each other to interact and share folders without the need for IT assistance. This approach is more agile and scalable, and suitable for self-organizing teams and ad-hoc collaboration.
An example for a private namespace 200 utilized by the cloud-based storage systems is illustrated in FIG. 2. The root folders 210 of a user are ‘my documents,’ ‘my pictures,’ and ‘shared with me.’ The root folders 210 can be shared with other users such as, e.g., ‘user1’ and ‘user2’. When a folder is shared with another user, that folder appears as a folder in the target user's namespace. The advantage of this model is that each user views a relatively simple and small directory structure, regardless of the overall size and number of users in the system.
The namespace utilized to the following methods are used to ensure that the shared folders do not conflict with each other may be as follows:
/shared with me/<user name>/shared folder name//shared with me by user name/shared folder name//shared folder name (user name)/That is, in the example shown in FIG. 2, the folders reports, gateways, and agents of user2 are shared with the user having the private namespace 200.
The private namespace is particularly disadvantageous in large organizations or networks, because organizational projects are often not owned by a specific person, but by specific groups or a role, which consist of a set of users that change over time. Furthermore, private namespace lacks a clear separation between folders shared personally between a number of individuals, and group projects, which are not strictly “owned” by a single fixed user but are rather owned by a specific role or group in the organization, and viewed by many individuals or in some cases even the entire organization.
It would be therefore advantageous to provide a namespace that overcomes the deficiencies of conventional systems in order to provide at least efficient data collaboration.